package com.netease.homework.dao;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Component;

import com.netease.homework.meta.Commodity;

/**
 * 
 * @author smart
 * @时间 2019年3月8日
 * @描述 商品相关CRUD
 */
@Component
public interface ICommodityDao {
	
	/**
	 * 
	 * @描述 获取所有商品
	 * @return 商品列表
	 */
	@Select("select * from commodity")
	public List<Commodity> getAllComm();
	
	/**
	 * 
	 * @描述 获取所有已售出商品
	 * @return 商品列表
	 */
	@Select("select * from commodity where isSelled=true")
	public List<Commodity> getSelledComm();

	/**
	 * 
	 * @描述 根据商品id查询商品
	 * @param id
	 * @return 商品
	 */
	@Select("select * from commodity where id=#{id}")
	public Commodity getCommById(Integer id);

	/**
	 * 
	 * @描述 单个添加商品
	 * @param commodity
	 * @return 是否添加成功
	 */
	@Insert("INSERT INTO commodity (name, price, picture, summary, description, isSelled)"
			+ " VALUES (#{name}, #{price}, #{picture}, #{summary}, #{description}, #{isSelled}) ")
	@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")
	public boolean addComm(Commodity commodity);

	/**
	 * 
	 * @描述 编辑商品
	 * @param commodity
	 * @return 编辑的id
	 */
	@Update("UPDATE commodity SET name=#{name},price=#{price},picture=#{picture},summary=#{summary},description=#{description},isSelled=#{isSelled} WHERE id=#{id}")
	public int editComm(Commodity commodity);

	/**
	 * 
	 * @描述 根据id删除商品
	 * @param id
	 * @return 删除的id
	 */
	@Delete("delete from commodity where id=#{id}")
	public int deleteComm(Integer id);

	/**
	 * 
	 * @描述 获取所有未出售商品
	 * @return 商品列表
	 */
	@Select("select * from commodity where isSelled=false")
	public List<Commodity> getNoSelledComm();
	
	
}
